package com.jian.utils;

import java.io.File;

import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.provider.MediaStore.Images.Media;

public class CameraUtils
{

	/**
	 * Onactivityresult(int req,int result ,intent data) result !=-1 屏蔽异常情况
	 */

	private CameraUtils() {

	}

	/**
	 * 打开照相机
	 * 
	 * @param c
	 *            activity
	 * @param file
	 *            拍照完成后保存的源文件
	 * @param TAG
	 */
	public static void OpenCemara(Activity c, Uri uri, int TAG)
	{
		try {
			Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
			intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, uri);
			intent.putExtra("return-data", true);
			c.startActivityForResult(intent, TAG);
		} catch (ActivityNotFoundException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 打开图库
	 * 
	 * @param c
	 * @param TAG
	 */
	public static void Open_gallery(Activity c, int TAG)
	{
		try {
			Intent image = new Intent(Intent.ACTION_PICK,
					Media.EXTERNAL_CONTENT_URI);
			image.setType("image/*");
			c.startActivityForResult(image, TAG);
		} catch (Exception e) {

			e.printStackTrace();
		}
	}
	/**
	 * 调用android自带裁剪图片功能模块
	 * @param c
	 * @param path  需要裁减的源图片路径
	 * @param outx    输出的图片的宽高
	 * @param outy
	 */
	public static void Crop_Pic(Activity c, String path,int outx ,int outy, int TAG)
	{
		try {

			File mfile = new File(path);
			Intent intent = new Intent("com.android.camera.action.CROP");
			intent.setDataAndType(Uri.fromFile(mfile), "image/*");
			intent.putExtra("crop", "true");
			// 裁剪框的比例，1：1
			intent.putExtra("aspectX", 1);
			intent.putExtra("aspectY", 1);
			// 设置输出的大小
			intent.putExtra("outputX", outx);
			intent.putExtra("outputY", outy);
			intent.putExtra("scale", true); // 设置是否允许拉伸
			// 如果要在给定的uri中获取图片，则必须设置为false，如果设置为true，那么便不会在给定的uri中获取到裁剪的图片
			intent.putExtra("return-data", true);
			intent.putExtra("outputFormat",
					Bitmap.CompressFormat.PNG.toString());// 设置输出格式
			intent.putExtra("noFaceDetection", true); // 无需人脸识别 默认不需要设置
			c.startActivityForResult(intent, TAG);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * 获取图片。intent来源于拍照，图库，裁剪。
	 * 
	 * @param data
	 * @return
	 */
	public static Bitmap getbitmap(Intent data)
	{

		if (null != data) {
			Bundle extras = data.getExtras();
			if (null != extras) {
				return extras.getParcelable("data");
			}
		}
		return null;
	}

	/**
	 * 获取打开图库选择的照片的路径
	 * 
	 * @param c
	 * @param data
	 *            来源于打开图库。选择的图片
	 * @return
	 */
	public static String getPicPath(Context c, Intent data)
	{
		if (null != data) {
			Uri selectedImage = data.getData();
			String[] filePathColumn = { MediaStore.Images.Media.DATA };
			try {
				Cursor cursor = c.getContentResolver().query(selectedImage,
						filePathColumn, null, null, null);
				cursor.moveToFirst();
				int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
				String picturePath = cursor.getString(columnIndex);
				cursor.close();
				cursor = null;
				return picturePath;
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return "";
	}

}
